package com.example.scaffold.common.result;

import lombok.Getter;

/**
 * 结果码枚举
 * 遵循阿里手册：错误码规范，分为系统级和业务级错误码
 * 系统级错误码使用HTTP状态码规则，业务级错误码按模块划分
 *
 * @author example
 */
@Getter
public enum ResultCode {

    // 系统级成功
    SUCCESS(200, "操作成功"),

    // 系统级错误
    SYSTEM_ERROR(500, "系统异常，请联系管理员"),
    PARAM_VALID_ERROR(400, "参数校验失败"),
    NOT_FOUND(404, "资源不存在"),
    UNAUTHORIZED(401, "未授权"),
    FORBIDDEN(403, "权限不足"),

    // 用户模块业务错误(10000系列)
    USER_NOT_FOUND(10001, "用户不存在"),
    USER_NAME_EXIST(10002, "用户名已存在"),
    PASSWORD_ERROR(10003, "密码错误"),
    USER_DISABLED(10004, "用户已被禁用"),
    
    // 角色模块业务错误(20000系列)
    ROLE_NOT_FOUND(20001, "角色不存在"),
    ROLE_NAME_EXIST(20002, "角色名称已存在"),
    ROLE_CODE_EXIST(20003, "角色编码已存在"),
    
    // 其他业务模块错误码...

    ;

    /**
     * 错误码
     */
    private final int code;

    /**
     * 错误信息
     */
    private final String message;

    ResultCode(int code, String message) {
        this.code = code;
        this.message = message;
    }
}
    